package guowenlong.golf.api;

import java.io.File;

import guowenlong.golf.entity.BaseEntity;
import guowenlong.golf.entity.ChangePasswordEntity;
import guowenlong.golf.entity.LoginEntity;
import guowenlong.golf.entity.RegistEntity;
import guowenlong.golf.entity.VerificationCodeEntity;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;

/**
 * des   : Api author: Administrator email : guowenlong20000@gmail.com time  : 2017年02月26日 下午 8:52.
 */

public interface Api {

  // 修改密码
  @FormUrlEncoded
  @POST("user/changePassword.json")
  Observable<ChangePasswordEntity> changePassword(@Field("token") String token,
      @Field("password") String password, @Field("rePassword") String rePassword);

  // 登录
  @FormUrlEncoded
  @POST("user/login.json")
  Observable<LoginEntity> login(@Field("phone") String phone, @Field("password") String password);

  // 注册
  @FormUrlEncoded
  @POST("user/create.json")
  Observable<RegistEntity> create(@Field("phone") String phone, @Field("password") String password,
      @Field("rePassword") String rePassword, @Field("code") String code);

  // 获取验证码
  @GET("phone/getCode.json")
  Observable<VerificationCodeEntity> getCode(@Query("phone") String phone);

  // 上传头像
  @FormUrlEncoded
  @POST("user/updateAvatar.json")
  Observable<BaseEntity> updateAvatar(@Field("file") File file, @Field("token") String token);

  // 所有新闻列表
  @GET("news/allNewsFromMobile.json")
  Observable<BaseEntity> allNewsFromMobile();

  // 搜索用户
  @GET("/search/user.json")
  Observable<BaseEntity> searchUser(@Field("token") String token, @Field("phone") String phone);

  // 所有好友
  @GET("friends/allFriends.json")
  Observable<BaseEntity> allFriends(@Field("token") String token);

  // 添加好友
  @GET("friends/addFriend.json")
  Observable<BaseEntity> addFriend(@Field("token") String token, @Field("friendID") String friendID);

  // 删除好友
  @GET("friends/removeFriend.json")
  Observable<BaseEntity> removeFriend(@Field("token") String token, @Field("friendID") String friendID);

  // -----------------------------历史-------------------------------
  //历史比赛
  @GET("gameUser/queryBallGameUserPage.json")
  Observable<BaseEntity> queryBallGameUserPage(@Field("token") String token, @Field("userId") String userId
 ,@Field("status") String status,@Field("currentPage") String currentPage );

  //个人成绩统计
  @GET("gameScoreUser/queryBallGameScoreCountByScoreId.json")
  Observable<BaseEntity> queryBallGameScoreCountByScoreId(@Field("token") String token,
                                                          @Field("scoreId") String scoreId,
                                                          @Field("gameId") String gameId);

  // -----------------------------搜索-------------------------------
  // -----------------------------球场-------------------------------
  //根据ID获取球场信息
  //多条件获取球场信息列表
  //获取球场分页
  //根据联盟ID获取联盟信息
  //联盟信息分页列表
  //球场攻略
  //根据球场ID获取球道列表
  //根据球道ID获取球道信息
  //获取图片信息列表

  // -----------------------------球赛计分-------------------------------
  //球赛清单-分页显示（未开始球赛、进行中球赛、已结束球赛）
  //建立球赛-友谊赛
  //建立球赛-通知参赛人（系统消息）
  //建立球赛-开始比赛
  //回合成绩-球道、果岭预览（球场-根据球道ID获取球道信息）
  //回合成绩-显示球洞信息（球场-根据球道ID获取球道信息）
  //回合成绩-显示成绩总表（根据成绩编号查询所有用户的成绩集合）
  //回合成绩-显示即时成绩
  //回合成绩-最终成绩
  //各洞成绩录入-杆数、推杆数、沙坑Bunkers、罚杆Panelties、方向Fireway
  //各洞成绩录入-传送成绩（同录入）
  //各洞成绩录入-修改本洞成绩（同录入，修改需要填写主键编号）
  //各洞成绩录入-下拉刷新：读取最新录入结果（同各洞成绩录入）
  //结算成绩-个人成绩统计（同最终成绩）
  //结算成绩-差点统计

  // -----------------------------俱乐部球队-------------------------------
  //俱乐部信息

}